package com.javacode2018.lesson001.demo17;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: hongsir
 * @Date: 2024/10/11 - 10 - 11 - 15:45
 * @Description: com.javacode2018.lesson001.demo17
 * @Version: 1.0
 */
@Configuration
public class Config {

    @Bean
    public C1 c1() {
        return new C1();
    }

    @Bean
    public C2 c2() {
        C1 c1 = new C1(); //@1
        return new C2(c1);
    }

    @Bean
    public C3 c3() {
        C1 c1 = this.c1(); //@2
        return new C3(c1);
    }

    public static class C1{}

    public static class C2{
        private C1 c1;

        public C2(C1 c1){
            this.c1 = c1;
        }
    }

    public static class C3{
        private C1 c1;

        public C3(C1 c1){
            this.c1 = c1;
        }
    }
}
